home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / windows / tbag32.zip / TBAGHELP.DFM / TBAGHELP.txt
Text File  |  1997-03-06  |  31KB  |  964 lines

  1. object Bag32Help: TBag32Help
  2.   Left = 378
  3.   Top = 181
  4.   Width = 640
  5.   Height = 480
  6.   Caption = 'TBag32 Help'
  7.   Font.Color = clWindowText
  8.   Font.Height = -11
  9.   Font.Name = 'MS Sans Serif'
  10.   Font.Style = []
  11.   Scaled = False
  12.   ShowHint = True
  13.   OnClose = FormClose
  14.   OnShow = FormShow
  15.   PixelsPerInch = 96
  16.   TextHeight = 13
  17.   object Panel1: TPanel
  18.     Left = 0
  19.     Top = 0
  20.     Width = 142
  21.     Height = 453
  22.     Align = alLeft
  23.     BevelOuter = bvNone
  24.     Caption = ' '
  25.     TabOrder = 0
  26.     object lbTopics: TListBox
  27.       Left = 0
  28.       Top = 145
  29.       Width = 142
  30.       Height = 308
  31.       Align = alClient
  32.       Font.Color = clNavy
  33.       Font.Height = -13
  34.       Font.Name = 'Arial'
  35.       Font.Style = [fsBold]
  36.       ItemHeight = 16
  37.       ParentFont = False
  38.       TabOrder = 0
  39.       OnClick = lbTopicsClick
  40.     end
  41.     object Panel2: TPanel
  42.       Left = 0
  43.       Top = 0
  44.       Width = 142
  45.       Height = 145
  46.       Align = alTop
  47.       BevelOuter = bvNone
  48.       Caption = ' '
  49.       TabOrder = 1
  50.       object rgTopics: TRadioGroup
  51.         Left = 12
  52.         Top = 8
  53.         Width = 117
  54.         Height = 129
  55.         Caption = 'Topics'
  56.         Font.Color = clRed
  57.         Font.Height = -13
  58.         Font.Name = 'Arial'
  59.         Font.Style = [fsBold]
  60.         Items.Strings = (
  61.           'About'
  62.           'Usage'
  63.           'Properties'
  64.           'Methods'
  65.           'Events'
  66.           'Build History')
  67.         ParentFont = False
  68.         TabOrder = 0
  69.         OnClick = rgTopicsClick
  70.       end
  71.     end
  72.   end
  73.   object memTopics: TRichEdit
  74.     Left = 142
  75.     Top = 0
  76.     Width = 490
  77.     Height = 453
  78.     Align = alClient
  79.     HideScrollBars = False
  80.     ReadOnly = True
  81.     ScrollBars = ssVertical
  82.     TabOrder = 1
  83.   end
  84.   object ListBox1: TListBox
  85.     Left = 216
  86.     Top = 56
  87.     Width = 121
  88.     Height = 97
  89.     ItemHeight = 13
  90.     Items.Strings = (
  91.       
  92.         '{\rtf1\ansi\ansicpg1252\deff0\deftab720{\fonttbl{\f0\fswiss MS S' +
  93.         'ans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss MS Sans Ser' +
  94.         'if;}{\f3\fswiss Arial;}{\f4\fmodern Courier New;}{\f5\fswiss\fpr' +
  95.         'q2 System;}}'
  96.       
  97.         '{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green0\b' +
  98.         'lue128;\red0\green0\blue255;\red0\green128\blue128;\red0\green12' +
  99.         '8\blue0;}'
  100.       
  101.         '\deflang1033\horzdoc{\*\fchars }{\*\lchars }\pard\li480\ri840\pl' +
  102.         'ain\f2\fs12\cf0       '
  103.       
  104.         '\par \pard\li480\ri840\qc\plain\f3\fs32\cf1\b ===ABOUT===\plain\' +
  105.         'f4\fs20 '
  106.       '\par \pard\li480\ri840\plain\f4\fs20 '
  107.       
  108.         '\par \plain\f3\fs24\cf2\b ---ABOUT: TBag32 Version\plain\f4\fs20' +
  109.         ' '
  110.       '\par '
  111.       '\par \plain\f2\fs24\b Build = 003\plain\f2\fs20\b   (06-Mar-97)'
  112.       '\par '
  113.       '\par \plain\f4\fs20 '
  114.       '\par '
  115.       '\par \plain\f3\fs24\cf2\b ---ABOUT: TBag32 Author\plain\f4\fs20 '
  116.       '\par '
  117.       
  118.         '\par \plain\f3\fs24\cf3\b Mike Orriss\plain\f3\fs20\cf3\b   (3K ' +
  119.         'Computer Consultancy)\plain\f3\fs20\b '
  120.       '\par '
  121.       '\par \plain\f3\fs20\cf3\b e-mail: mjo@compuserve.com'
  122.       '\par tel:  +44 (0)1785 824053'
  123.       '\par '
  124.       '\par '
  125.       '\par \plain\f4\fs20 '
  126.       '\par '
  127.       
  128.         '\par \plain\f3\fs24\cf2\b ---ABOUT: TBag32 Source Code\plain\f4\' +
  129.         'fs20 '
  130.       '\par '
  131.       
  132.         '\par \plain\f2\fs20 TBag32 compiled code is free via Compuserve ' +
  133.         'BDelphi forum library 22 (\plain\f2\fs20\cf3 TBAG32.ZIP\plain\f2' +
  134.         '\fs20 ).'
  135.       '\par '
  136.       
  137.         '\par The full source code is available from Compuserve SWREG for' +
  138.         ' U.S $20.'
  139.       '\par '
  140.       '\par '
  141.       '\par '
  142.       '\par '
  143.       '\par '
  144.       '\par '
  145.       '\par '
  146.       '\par '
  147.       '\par '
  148.       '\par '
  149.       '\par '
  150.       '\par '
  151.       '\par '
  152.       '\par '
  153.       '\par '
  154.       '\par '
  155.       '\par '
  156.       '\par '
  157.       '\par '
  158.       '\par '
  159.       '\par '
  160.       '\par '
  161.       '\par '
  162.       '\par '
  163.       '\par '
  164.       '\par \plain\f4\fs20 '
  165.       
  166.         '\par \pard\li480\ri840\qc\plain\f3\fs32\cf1\b ===USAGE===\plain\' +
  167.         'f4\fs20 '
  168.       '\par \pard\li480\ri840\plain\f4\fs20 '
  169.       '\par \plain\f3\fs24\cf2\b ---USAGE: Purpose\plain\f4\fs20 '
  170.       '\par '
  171.       
  172.         '\par \plain\f2\fs20 TBag32 is designed to simplify saving/restor' +
  173.         'ing user settings via the Win32 Registry.'
  174.       '\par '
  175.       
  176.         '\par This is achieved via pairs of methods, e.g GetString & SetS' +
  177.         'tring. All '#39'Set'#39' methods are procedures but the '#39'Get'#39' methods ar' +
  178.         'e a mixture of functions and procedures, depending whether the w' +
  179.         'hole object is changing or just one of its properties.'
  180.       '\par '
  181.       '\par For example, compare GetFont and GetFontAndColor:'
  182.       '\par \plain\f4\fs20 '
  183.       '\par \plain\f4\fs20\cf3   SubKey := '#39'SOFTWARE\\3K\\TEST\\'#39';'
  184.       '\par   Memo1.Font := GetFont('#39'FONT'#39',Memo1.Font);'
  185.       '\par   GetFontAndColor('#39'F_AND_C'#39',Memo1);\plain\f4\fs20 '
  186.       '\par '
  187.       
  188.         '\par \plain\f2\fs20 In the first case, the 2nd parameter is the ' +
  189.         'default value and you could use any Font property -  it doesn'#39't ' +
  190.         'have to be Memo1.'
  191.       '\par '
  192.       
  193.         '\par In the second case, Memo1'#39's Font & Color properties will be' +
  194.         ' updated if the registry entry exists.'
  195.       '\par '
  196.       '\par '
  197.       '\par \plain\f4\fs20 '
  198.       '\par \plain\f3\fs24\cf2\b ---USAGE: Typical\plain\f4\fs20 '
  199.       '\par '
  200.       
  201.         '\par \plain\f2\fs20 A simple way of using TBag32 is to place the' +
  202.         ' '#39'Get'#39' methods in Form.Show and the '#39'Set'#39' methods in Form.Close,' +
  203.         ' e.g assuming that Bag1 is a TBag32 component:'
  204.       '\par \plain\f4\fs20 '
  205.       
  206.         '\par \plain\f4\fs20\cf3  procedure TForm1.FormShow(Sender: TObje' +
  207.         'ct);'
  208.       '\par  begin'
  209.       '\par    with Bag1 do begin'
  210.       '\par      GetFormPlace('#39'FORMPLACE'#39',Self);'
  211.       '\par      Box1.ItemIndex:=GetInteger('#39'LB'#39',0);'
  212.       '\par    end;'
  213.       '\par  end;'
  214.       '\par '
  215.       
  216.         '\par  procedure TForm1.FormClose(Sender: TObject; var Action: TC' +
  217.         'loseAction);'
  218.       '\par  begin'
  219.       '\par    with Bag1 do begin'
  220.       '\par      SetInteger('#39'LB'#39',Box1.ItemIndex);'
  221.       '\par      SetFormPlace('#39'FORMPLACE'#39',Self);'
  222.       '\par    end;'
  223.       '\par  end;'
  224.       '\par '
  225.       '\par \plain\f4\fs20 '
  226.       '\par '
  227.       '\par \plain\f3\fs24\cf2\b ---USAGE: Registry Keys\plain\f4\fs20 '
  228.       '\par '
  229.       
  230.         '\par \plain\f2\fs20 TBag32 sets the default Registry root key to' +
  231.         ':'
  232.       '\par '
  233.       '\par   \plain\f2\fs20\cf3 HKEY_CURRENT_USERS\plain\f2\fs20 '
  234.       '\par '
  235.       
  236.         '\par and all keys supplied (which may be left blank) to the Get/' +
  237.         'Set methods are relative to that. For normal purposes this is su' +
  238.         'fficient but you can change the RootKey property if you wish to ' +
  239.         ' use a different Registry root.'
  240.       '\par '
  241.       
  242.         '\par The SubKey property allows you to set a common Registry key' +
  243.         ', simplifying the statements required. The following sets of sta' +
  244.         'tements are logically equivalent:'
  245.       '\par '
  246.       '\par \plain\f4\fs20\cf3 SubKey := '#39#39';'
  247.       '\par SetString('#39'Software\\3K\\TBag32\\Title'#39','#39'default title'#39');'
  248.       '\par SetBoolean('#39'Software\\3K\\TBag32\\First'#39',True);'
  249.       '\par '
  250.       '\par SubKey := '#39'Software\\3K'#39';'
  251.       '\par SetString('#39'TBag32\\Title'#39','#39'default title'#39');'
  252.       '\par SetBoolean('#39'TBag32\\First'#39',True);'
  253.       '\par '
  254.       '\par SubKey := '#39'Software\\3K\\TBag32'#39';'
  255.       '\par SetString('#39'Title'#39','#39'default title'#39');'
  256.       '\par SetBoolean('#39'First'#39',True);'
  257.       '\par '
  258.       
  259.         '\par \plain\f2\fs20 Note: as the GetAll method processes multipl' +
  260.         'e keys, it does not use the SubKey property.'
  261.       '\par '
  262.       '\par '
  263.       '\par \plain\f4\fs20 '
  264.       '\par '
  265.       '\par \plain\f3\fs24\cf2\b ---USAGE: GetAll\plain\f4\fs20 '
  266.       '\par '
  267.       
  268.         '\par \plain\f2\fs20 The GetAll method is a special case. It allo' +
  269.         'ws you to iterate through a section of the Registry  and, by usi' +
  270.         'ng one or more of the events provided,  you can display the regi' +
  271.         'stry contents.'
  272.       
  273.         '\par The \plain\f2\fs20\cf3 TEST.DPR\plain\f2\fs20  demo provide' +
  274.         'd shows how to display via a TreeView using very few lines of co' +
  275.         'de.'
  276.       '\par '
  277.       
  278.         '\par Note that the GetStrings method handles all types of Regist' +
  279.         'ry entries. Particularly useful is the display of binary entries' +
  280.         ', which are displayed in \plain\f2\fs20\b binary and character \' +
  281.         'plain\f2\fs20 format.'
  282.       '\par '
  283.       
  284.         '\par Also note: as the GetAll method processes multiple keys, it' +
  285.         ' does not use the SubKey property.'
  286.       '\par '
  287.       '\par \plain\f4\fs20 '
  288.       '\par '
  289.       '\par '
  290.       '\par '
  291.       '\par '
  292.       '\par '
  293.       '\par '
  294.       '\par '
  295.       '\par '
  296.       '\par '
  297.       '\par '
  298.       '\par '
  299.       '\par '
  300.       '\par '
  301.       '\par '
  302.       '\par '
  303.       '\par '
  304.       '\par '
  305.       '\par '
  306.       '\par '
  307.       '\par '
  308.       '\par '
  309.       '\par '
  310.       
  311.         '\par \pard\li480\ri840\qc\plain\f3\fs32\cf1\b ===PROPERTIES===\p' +
  312.         'lain\f4\fs20 '
  313.       '\par \pard\li480\ri840\plain\f4\fs20 '
  314.       '\par \plain\f3\fs24\cf2\b ---PROPERTIES: Name\plain\f4\fs20 '
  315.       '\par '
  316.       '\par \plain\f2\fs20 Standard property.\plain\f4\fs20 '
  317.       '\par '
  318.       '\par '
  319.       '\par '
  320.       '\par \plain\f3\fs24\cf2\b ---PROPERTIES: RootKey\plain\f4\fs20 '
  321.       '\par '
  322.       
  323.         '\par \plain\f2\fs20 Controls the section of the Registry being p' +
  324.         'rocessed.'
  325.       '\par '
  326.       '\par '
  327.       '\par '
  328.       '\par \plain\f3\fs24\cf2\b ---PROPERTIES: SubKey\plain\f4\fs20 '
  329.       '\par '
  330.       
  331.         '\par \plain\f2\fs20 Allows you to set a common Registry key. The' +
  332.         ' following pairs of statements are logically equivalent:'
  333.       '\par '
  334.       '\par \plain\f4\fs20\cf3 SubKey := '#39#39';'
  335.       '\par SetString('#39'Software\\3K\\TBag32\\Title'#39','#39'default title'#39');'
  336.       '\par '
  337.       '\par SubKey := '#39'Software\\3K\\TBag32'#39';'
  338.       '\par SetString('#39'Title'#39','#39'default title'#39');'
  339.       '\par \plain\f2\fs20 '
  340.       '\par \plain\f4\fs20 '
  341.       '\par '
  342.       '\par \plain\f3\fs24\cf2\b ---PROPERTIES: Tag\plain\f4\fs20 '
  343.       '\par '
  344.       
  345.         '\par \plain\f2\fs20 Standard property. Note that this could be u' +
  346.         'sed to differentiate between multiple GetAll calls, so that its ' +
  347.         'four events can operate in a different fashion for each call.\pl' +
  348.         'ain\f4\fs20 '
  349.       '\par '
  350.       '\par '
  351.       '\par '
  352.       '\par '
  353.       '\par '
  354.       '\par '
  355.       '\par '
  356.       '\par '
  357.       '\par '
  358.       '\par '
  359.       '\par '
  360.       '\par '
  361.       '\par '
  362.       '\par '
  363.       '\par '
  364.       '\par '
  365.       '\par '
  366.       '\par '
  367.       '\par '
  368.       '\par '
  369.       '\par '
  370.       '\par '
  371.       '\par '
  372.       '\par '
  373.       '\par '
  374.       '\par '
  375.       '\par '
  376.       '\par '
  377.       '\par '
  378.       '\par '
  379.       '\par '
  380.       '\par \pard\li480\ri840\qc\plain\f3\fs32\cf1\b ===METHODS==='
  381.       '\par '
  382.       
  383.         '\par \pard\li480\ri840\plain\f2\fs20 All the methods below (with' +
  384.         ' the exception of GetAll) have a first parameter of AName which ' +
  385.         'represents the concatenation of the Registry key, the SubKey pro' +
  386.         'perty and the identity. TBag32 extracts the last token as the id' +
  387.         'entity, leaving the remainder of AName as the Registry key.'
  388.       '\par '
  389.       '\par For example, you might say:'
  390.       '\par '
  391.       
  392.         '\par   \plain\f4\fs20\cf3 SubKey := '#39'Software\\3K'#39';\plain\f2\fs2' +
  393.         '0 '
  394.       
  395.         '\par   \plain\f4\fs20\cf3 len := GetInteger(TBag\\Index1'#39',0);\pl' +
  396.         'ain\f2\fs20 '
  397.       '\par '
  398.       
  399.         '\par This will extract the value of Index1 for the '#39'Software\\3K' +
  400.         '\\TBag'#39' key, returning zero if the key doesn'#39't exist.'
  401.       '\par '
  402.       '\par \plain\f4\fs20   '
  403.       '\par '
  404.       '\par \plain\f3\fs24\cf2\b ---METHODS: Construct\plain\f4\fs20 '
  405.       '\par '
  406.       
  407.         '\par \plain\f4\fs20\cf3 constructor Construct(subkey: string);\p' +
  408.         'lain\f4\fs20 '
  409.       '\par '
  410.       
  411.         '\par \plain\f2\fs20 This is a convenient way of creating a TBag3' +
  412.         '2 object at run-time.  Application is the owner of the TBag32 in' +
  413.         'stance created. '
  414.       '\par '
  415.       '\par \plain\f4\fs20\cf3 Example:'
  416.       '\par '
  417.       '\par   with TBag32.Construct('#39'Software\\3K\\TBag32'#39') do try  '
  418.       '\par     GetStrings('#39'LIST_ITEMS'#39',ListBox1.Items);'
  419.       '\par   finally'
  420.       '\par     Free;'
  421.       '\par   end;\plain\f4\fs20 '
  422.       '\par  '
  423.       '\par '
  424.       '\par   '
  425.       
  426.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  427.         '\f4\fs28 '
  428.       '\par \plain\f3\fs24\cf2\b '
  429.       '\par ---METHODS: GetDataSize\plain\f4\fs20 '
  430.       '\par '
  431.       
  432.         '\par \plain\f4\fs20\cf3 procedure GetDataSize(const AName: strin' +
  433.         'g): integer;\plain\f4\fs20 '
  434.       '\par '
  435.       
  436.         '\par \plain\f2\fs20 Returns the size of a data value. If the key' +
  437.         ' does not exist, it returns -1. Use this function in order to si' +
  438.         'ze the buffer you provide for the GetBinary procedure.'
  439.       '\par '
  440.       '\par \plain\f4\fs20\cf3 Example:'
  441.       '\par '
  442.       '\par   blen := GetDataSize('#39'Bin'#39');'
  443.       '\par   if blen > 0 then begin'
  444.       '\par     buffer := AllocMem(blen);'
  445.       '\par     try'
  446.       '\par       blen:=GetBinary('#39'Bin'#39',buffer,blen);'
  447.       '\par       // process buffer;'
  448.       '\par     finally'
  449.       '\par       FreeMem(buffer);'
  450.       '\par     end;'
  451.       '\par   end;\plain\f4\fs20 '
  452.       '\par  '
  453.       '\par '
  454.       '\par   '
  455.       
  456.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  457.         '\f4\fs28 '
  458.       '\par \plain\f3\fs24\cf2\b '
  459.       '\par ---METHODS: GetAll\plain\f4\fs20 '
  460.       '\par '
  461.       
  462.         '\par \plain\f4\fs20\cf3 procedure GetAll(const AKey: string; max' +
  463.         'level: integer);\plain\f4\fs20 '
  464.       '\par '
  465.       
  466.         '\par \plain\f2\fs20 Iterates through a section of the registry. ' +
  467.         'Place your processing in one or more of its associated events.'
  468.       
  469.         '\par The '#39'maxlevel'#39' parameter restricts the number of nested lev' +
  470.         'els down the Registry tree that are processed and is provided fo' +
  471.         'r performance reasons:\plain\f4\fs20 '
  472.       '\par '
  473.       '\par   \plain\f4\fs20\cf3 GetAll('#39#39',99);\plain\f4\fs20 '
  474.       '\par '
  475.       
  476.         '\par \plain\f2\fs20 on '#39'\plain\f2\fs20\b HKEY_CURRENT_USER\plain' +
  477.         '\f2\fs20 '#39' may be a bit slow.'
  478.       '\par \plain\f4\fs20 '
  479.       '\par   '
  480.       
  481.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  482.         '\f4\fs28 '
  483.       '\par \plain\f4\fs20 '
  484.       '\par '
  485.       '\par \plain\f3\fs24\cf2\b ---METHODS: GetBinary\plain\f4\fs20 '
  486.       '\par '
  487.       
  488.         '\par \plain\f4\fs20\cf3 function GetBinary(const AName: string; ' +
  489.         'var Buffer; BufSize: integer): integer;'
  490.       '\par \plain\f4\fs20 '
  491.       '\par '
  492.       '\par \plain\f3\fs24\cf2\b ---METHODS: SetBinary\plain\f4\fs20 '
  493.       '\par '
  494.       
  495.         '\par \plain\f4\fs20\cf3 procedure SetBinary(const AName: string;' +
  496.         ' var Buffer; BufSize: integer);\plain\f4\fs20 '
  497.       '\par '
  498.       
  499.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  500.         '\f4\fs28 '
  501.       '\par \plain\f4\fs20 '
  502.       '\par '
  503.       '\par \plain\f3\fs24\cf2\b ---METHODS: GetBoolean\plain\f4\fs20 '
  504.       '\par '
  505.       
  506.         '\par \plain\f4\fs20\cf3 function GetBoolean(const AName: string;' +
  507.         ' ADef: Boolean): Boolean;'
  508.       '\par \plain\f4\fs20 '
  509.       '\par '
  510.       '\par \plain\f3\fs24\cf2\b ---METHODS: SetBoolean\plain\f4\fs20 '
  511.       '\par '
  512.       
  513.         '\par \plain\f4\fs20\cf3 procedure SetBoolean(const AName: string' +
  514.         '; AValue: Boolean);\plain\f4\fs20 '
  515.       '\par '
  516.       
  517.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  518.         '\f4\fs28 '
  519.       '\par \plain\f4\fs20 '
  520.       '\par '
  521.       '\par \plain\f3\fs24\cf2\b ---METHODS: GetColor\plain\f4\fs20 '
  522.       '\par '
  523.       
  524.         '\par \plain\f4\fs20\cf3 function GetColor(const AName: string; c' +
  525.         'onst ADef: TColor): '
  526.       '\par TColor;'
  527.       '\par \plain\f4\fs20 '
  528.       '\par '
  529.       '\par \plain\f3\fs24\cf2\b ---METHODS: SetColor\plain\f4\fs20 '
  530.       '\par '
  531.       
  532.         '\par \plain\f4\fs20\cf3 procedure SetColor(const AName: string; ' +
  533.         'const AValue: TColor);\plain\f4\fs20 '
  534.       '\par '
  535.       
  536.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  537.         '\f4\fs28 '
  538.       '\par \plain\f4\fs20 '
  539.       '\par '
  540.       
  541.         '\par \plain\f3\fs24\cf2\b ---METHODS: GetFormPlace\plain\f4\fs20' +
  542.         ' '
  543.       '\par '
  544.       
  545.         '\par \plain\f4\fs20\cf3 procedure GetFormPlace(const AName: stri' +
  546.         'ng; const AForm: TForm);'
  547.       '\par '
  548.       
  549.         '\par \plain\f2\fs20\cf0 Restores the form to the saved position,' +
  550.         ' size and state.'
  551.       '\par '
  552.       '\par \plain\f4\fs20\cf3 Example: '
  553.       '\par '
  554.       '\par procedure TForm1.FormShow(Sender: TObject);'
  555.       '\par begin'
  556.       '\par   with Bag1 do begin'
  557.       '\par     GetFormPlace('#39'FORMPLACE'#39',Self);'
  558.       '\par   end;'
  559.       '\par end;'
  560.       '\par \plain\f4\fs20 '
  561.       '\par '
  562.       
  563.         '\par \plain\f3\fs24\cf2\b ---METHODS: SetFormPlace\plain\f4\fs20' +
  564.         ' '
  565.       '\par '
  566.       
  567.         '\par \plain\f4\fs20\cf3 procedure SetFormPlace(const AName: stri' +
  568.         'ng; const AForm: TForm);\plain\f4\fs20 '
  569.       '\par \plain\f2\fs20\cf0 '
  570.       '\par Saves the form'#39's position, size and state.'
  571.       '\par '
  572.       '\par \plain\f4\fs20\cf3 Example: '
  573.       '\par '
  574.       
  575.         '\par procedure TForm1.FormCloseQuery(Sender: TObject; var CanClo' +
  576.         'se: Boolean);'
  577.       '\par begin'
  578.       '\par   with Bag1 do begin'
  579.       '\par     SetFormPlace('#39'FORMPLACE'#39',Self);'
  580.       '\par   end;'
  581.       '\par end;\plain\f4\fs20 '
  582.       '\par '
  583.       
  584.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  585.         '\f4\fs28 '
  586.       '\par \plain\f4\fs20 '
  587.       '\par '
  588.       '\par \plain\f3\fs24\cf2\b ---METHODS: GetFont\plain\f4\fs20 '
  589.       '\par '
  590.       
  591.         '\par \plain\f4\fs20\cf3 function GetFont(const AName: string; AD' +
  592.         'ef: TFont): TFont;\plain\f4\fs20 '
  593.       '\par '
  594.       '\par '
  595.       '\par '
  596.       '\par \plain\f3\fs24\cf2\b ---METHODS: SetFont\plain\f4\fs20 '
  597.       '\par '
  598.       
  599.         '\par \plain\f4\fs20\cf3 procedure SetFont(const AName: string; c' +
  600.         'onst AValue: TFont);\plain\f4\fs20 '
  601.       '\par '
  602.       
  603.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  604.         '\f4\fs28 '
  605.       '\par \plain\f4\fs20 '
  606.       '\par '
  607.       
  608.         '\par \plain\f3\fs24\cf2\b ---METHODS: GetFontAndColor\plain\f4\f' +
  609.         's20 '
  610.       '\par '
  611.       
  612.         '\par \plain\f4\fs20\cf3 procedure GetFontAndColor(const AName: s' +
  613.         'tring; const AComp: TWinControl);\plain\f4\fs20 '
  614.       '\par '
  615.       
  616.         '\par \plain\f2\fs20 Many window controls have Font and Color pro' +
  617.         'perties and this method is useful for restoring/saving as a sing' +
  618.         'le operation. Note that the control must be descended from TCont' +
  619.         'rol for this method to work.'
  620.       '\par '
  621.       
  622.         '\par The Font & Color properties are left unchanged if the Regis' +
  623.         'try entry does not exist.\plain\f4\fs20 '
  624.       '\par '
  625.       '\par '
  626.       
  627.         '\par \plain\f3\fs24\cf2\b ---METHODS: SetFontAndColor\plain\f4\f' +
  628.         's20 '
  629.       '\par '
  630.       
  631.         '\par \plain\f4\fs20\cf3 procedure SetFontAndColor(const AName: s' +
  632.         'tring; const AComp: TWinControl);\plain\f4\fs20 '
  633.       '\par '
  634.       
  635.         '\par \plain\f2\fs20 This method saves AComp'#39's Font and Color pro' +
  636.         'perties into a single binary registry entry.\plain\f4\fs20 '
  637.       '\par '
  638.       
  639.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  640.         '\f4\fs28 '
  641.       '\par \plain\f4\fs20 '
  642.       '\par '
  643.       '\par \plain\f3\fs24\cf2\b ---METHODS: GetInteger\plain\f4\fs20 '
  644.       '\par '
  645.       
  646.         '\par \plain\f4\fs20\cf3 function GetInteger(const AName: string;' +
  647.         ' ADef: integer): integer;\plain\f4\fs20 '
  648.       '\par '
  649.       '\par '
  650.       '\par \plain\f3\fs24\cf2\b ---METHODS: SetInteger\plain\f4\fs20 '
  651.       '\par '
  652.       
  653.         '\par \plain\f4\fs20\cf3 procedure SetInteger(const AName: string' +
  654.         '; AValue: integer);\plain\f4\fs20 '
  655.       '\par '
  656.       
  657.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  658.         '\f4\fs28 '
  659.       '\par \plain\f4\fs20 '
  660.       '\par '
  661.       '\par \plain\f3\fs24\cf2\b ---METHODS: GetString\plain\f4\fs20 '
  662.       '\par '
  663.       
  664.         '\par \plain\f4\fs20\cf3 function GetString(const AName,ADef: str' +
  665.         'ing): string;\plain\f4\fs20 '
  666.       '\par '
  667.       
  668.         '\par \plain\f2\fs20 The GetString method will handle any kind of' +
  669.         ' Registry entry, returning '#39'\plain\f2\fs20\cf3 <binary L=nnn>\pl' +
  670.         'ain\f2\fs20 '#39' or '#39'\plain\f2\fs20\cf3 <unknown>\plain\f2\fs20 '#39' f' +
  671.         'or the two datatypes it cannot handle. See GetStrings below in o' +
  672.         'rder to display binary data in a TStrings descendant.\plain\f4\f' +
  673.         's20  '
  674.       '\par '
  675.       '\par '
  676.       '\par \plain\f3\fs24\cf2\b ---METHODS: SetString\plain\f4\fs20 '
  677.       '\par '
  678.       
  679.         '\par \plain\f4\fs20\cf3 procedure SetString(const AName,AValue: ' +
  680.         'string);\plain\f4\fs20 '
  681.       '\par '
  682.       
  683.         '\par \plain\f4\fs28\cf4 __________________________________\plain' +
  684.         '\f4\fs28 '
  685.       '\par \plain\f4\fs20 '
  686.       '\par '
  687.       '\par \plain\f3\fs24\cf2\b ---METHODS: GetStrings\plain\f4\fs20 '
  688.       '\par '
  689.       
  690.         '\par \plain\f4\fs20\cf3 procedure GetStrings(const AName: string' +
  691.         '; AValue: TStrings);\plain\f4\fs20 '
  692.       '\par '
  693.       
  694.         '\par \plain\f2\fs20 This method handles all datatypes in a usefu' +
  695.         'l manner except for '#39'<unknown'#39'.'
  696.       '\par '
  697.       
  698.         '\par String data is checked for the existence of a comma, '#39','#39' an' +
  699.         'd if found, uses the TStrings.CommaText method to split the data' +
  700.         ' into lines.'
  701.       '\par '
  702.       
  703.         '\par Binary data is written 16 bytes to a line in the following ' +
  704.         'format:'
  705.       '\par \plain\f4\fs20 '
  706.       
  707.         '\par \plain\f4\fs16\cf5 000 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx ' +
  708.         '*............*'
  709.       
  710.         '\par 010 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx *............*\plai' +
  711.         'n\f4\fs20\cf5 '
  712.       '\par \plain\f4\fs20 '
  713.       
  714.         '\par \plain\f2\fs20 where \plain\f2\fs20\cf5 xxxxxx\plain\f2\fs2' +
  715.         '0  is the hex representation followed by the printable character' +
  716.         's with non-printable replaced by '#39'.'#39'.'
  717.       '\par \plain\f4\fs20 '
  718.       '\par '
  719.       '\par '
  720.       '\par \plain\f3\fs24\cf2\b ---METHODS: SetStrings\plain\f4\fs20 '
  721.       '\par '
  722.       
  723.         '\par \plain\f4\fs20\cf3 procedure SetStrings(const AName: string' +
  724.         '; const AValue: TStrings);\plain\f4\fs20 '
  725.       '\par '
  726.       
  727.         '\par \plain\f2\fs20 This method allows to to save any TStrings d' +
  728.         'escendent into a single Registry entry.\plain\f4\fs20 '
  729.       '\par \plain\f4\fs20\cf3 '
  730.       '\par Example:'
  731.       '\par '
  732.       '\par   SetStrings('#39'LIST_ITEMS'#39',ListBox.Items);'
  733.       '\par \plain\f4\fs20 '
  734.       '\par \plain\f4\fs28\cf4 '
  735.       '\par '
  736.       '\par '
  737.       '\par '
  738.       '\par '
  739.       '\par '
  740.       '\par '
  741.       '\par '
  742.       '\par '
  743.       '\par '
  744.       '\par '
  745.       '\par '
  746.       '\par '
  747.       '\par '
  748.       '\par '
  749.       '\par '
  750.       '\par '
  751.       '\par '
  752.       '\par '
  753.       '\par '
  754.       '\par '
  755.       '\par '
  756.       '\par '
  757.       '\par '
  758.       '\par '
  759.       '\par '
  760.       '\par '
  761.       '\par \plain\f4\fs20 '
  762.       '\par '
  763.       
  764.         '\par \pard\li480\ri840\qc\plain\f3\fs32\cf1\b ===EVENTS===\plain' +
  765.         '\f4\fs20 '
  766.       '\par \pard\li480\ri840\plain\f4\fs20 '
  767.       
  768.         '\par \plain\f3\fs24\cf2\b ---EVENTS: OnBeforeGetAll\plain\f4\fs2' +
  769.         '0 '
  770.       '\par '
  771.       
  772.         '\par \plain\f4\fs20\cf3 OnBeforeGetAll(Sender: TObject);\plain\f' +
  773.         '4\fs20 '
  774.       '\par '
  775.       
  776.         '\par \plain\f2\fs20 This event is fired at the start of the GetA' +
  777.         'll method. You can use it (and its partner OnAfterGetAll) in ord' +
  778.         'er to issue BeginUpdate and AfterUpdate type commands.'
  779.       '\par '
  780.       
  781.         '\par Note: you could issue any such commands within your code wr' +
  782.         'apped around the GetAll call, but these events handle the try/fi' +
  783.         'nally/end logic for you, so you don'#39't have to write so much code' +
  784.         '.\plain\f4\fs20 '
  785.       '\par '
  786.       '\par '
  787.       '\par  '
  788.       '\par \plain\f3\fs24\cf2\b ---EVENTS: OnGetAll\plain\f4\fs20 '
  789.       '\par '
  790.       
  791.         '\par \plain\f4\fs20\cf3 OnGetAll(Sender: TObject; const Key: str' +
  792.         'ing; Level: integer; const Ident: string; const Value: string; v' +
  793.         'ar Continue: boolean);\plain\f4\fs20 '
  794.       '\par '
  795.       
  796.         '\par \plain\f2\fs20 This event fires for each Registry value fou' +
  797.         'nd during a GetAll method call.'
  798.       '\par '
  799.       
  800.         '\par Use the '#39'Level'#39' parameter in harness with the OnGetAllNewLe' +
  801.         'vel event described below. For example, you could manage an arra' +
  802.         'y of TTreeNodes and use Level as its index. All Values for a par' +
  803.         'ticular Key will be returned sequentially and you can rely on th' +
  804.         'e Level being the same as that from the last fired OnGetAllNewLe' +
  805.         'vel event.'
  806.       '\par '
  807.       
  808.         '\par See the demo application, which displays the Registry in a ' +
  809.         'TreeView, together with a TMemo that displays the full contents ' +
  810.         'of the current Registry entry.'
  811.       '\par '
  812.       '\par '
  813.       '\par \plain\f4\fs20 '
  814.       
  815.         '\par \plain\f3\fs24\cf2\b ---EVENTS: OnGetAllNewLevel\plain\f4\f' +
  816.         's20 '
  817.       '\par '
  818.       
  819.         '\par \plain\f4\fs20\cf3 OnGetAllNewLevel(Sender: TObject; const ' +
  820.         'Key: string; Level: integer; var Continue: boolean);\plain\f4\fs' +
  821.         '20 '
  822.       '\par '
  823.       
  824.         '\par \plain\f2\fs20 This event is fired during GetAll processing' +
  825.         ' every time that a Registry Key is reached for the first time. T' +
  826.         'hus for the  Key '#39'Software\\3K\\TBag32\\Test'#39', the event will fi' +
  827.         're four times, returning '#39'Software'#39', '#39'3K'#39', '#39'TBag32'#39' and '#39'Test'#39' a' +
  828.         't Level 0 through 3 respectively.'
  829.       '\par '
  830.       
  831.         '\par You can save data in array(s) using Level as an index and t' +
  832.         'hen use the Level returned by the OnGetAll event to associate wi' +
  833.         'th data value(s) returned.'
  834.       '\par '
  835.       '\par '
  836.       '\par \plain\f4\fs20 '
  837.       
  838.         '\par \plain\f3\fs24\cf2\b ---EVENTS: OnAfterGetAll\plain\f3\fs24' +
  839.         '\b '
  840.       '\par \plain\f4\fs20 '
  841.       
  842.         '\par \plain\f4\fs20\cf3 OnAfterGetAll(Sender: TObject);\plain\f4' +
  843.         '\fs20 '
  844.       '\par '
  845.       
  846.         '\par \plain\f2\fs20 This event is fired at the end of the GetAll' +
  847.         ' method. You can use it (and its partner OnBeforeGetAll) in orde' +
  848.         'r to issue BeginUpdate and EndUpdate type commands.'
  849.       '\par '
  850.       
  851.         '\par Note: you could issue any such commands within your code wr' +
  852.         'apped around the GetAll call, but these events handle the try/fi' +
  853.         'nally/end logic for you, so you don'#39't have to write so much code' +
  854.         '.'
  855.       '\par '
  856.       '\par '
  857.       '\par '
  858.       '\par '
  859.       '\par '
  860.       '\par '
  861.       '\par '
  862.       '\par '
  863.       '\par '
  864.       '\par '
  865.       '\par '
  866.       '\par '
  867.       '\par '
  868.       '\par '
  869.       '\par '
  870.       '\par '
  871.       '\par '
  872.       '\par '
  873.       '\par '
  874.       '\par '
  875.       '\par '
  876.       '\par '
  877.       '\par '
  878.       '\par '
  879.       '\par '
  880.       '\par '
  881.       
  882.         '\par \pard\li480\ri840\qc\plain\f3\fs32\cf1\b ===BUILD HISTORY==' +
  883.         '=\plain\f4\fs20 '
  884.       '\par \pard\li480\ri840\plain\f4\fs20 '
  885.       '\par \plain\f3\fs24\cf2\b ---BUILD HISTORY:  003  06-Mar-97'
  886.       '\par \plain\f0\fs20\cf0 '
  887.       
  888.         '\par TBAG32:  fixed GetStrings bug (stopped losing IDE contents ' +
  889.         'when no Registry entry).'
  890.       '\par '
  891.       '\par TBAG32:  added Construct constructor.'
  892.       '\par '
  893.       '\par TBAG32:  added SubKey property.'
  894.       '\par \plain\f0\fs20\cf2 '
  895.       
  896.         '\par \plain\f2\fs20\cf0 ABOUT:  replaced REGVIEWA.DFM/PAS with A' +
  897.         'BOUT3K.DFM/PAS.'
  898.       '\par '
  899.       '\par '
  900.       '\par \plain\f3\fs24\cf2\b ---BUILD HISTORY:  002  05-Mar-97'
  901.       '\par '
  902.       
  903.         '\par \plain\f2\fs20\cf0 REGVIEW:  new name for the '#39'TEST'#39' demo a' +
  904.         'pplication.'
  905.       '\par '
  906.       '\par TEST:  added '#39'About'#39' button and screen.'
  907.       '\par '
  908.       
  909.         '\par TEST:  removed Rootkey changes auto-setting Levels=1 (for P' +
  910.         'hil).'
  911.       '\par '
  912.       '\par TEST:  stopped  '#39'Memo1'#39' from displaying at start-up.'
  913.       '\par '
  914.       
  915.         '\par TEST:  initial display always showed '#39'HKEY_CURRENT_USER'#39' de' +
  916.         'tails.'
  917.       '\par '
  918.       '\par TEST:  fixed intermittent '#39'list index out of bounds'#39' error.'
  919.       '\par '
  920.       
  921.         '\par HELP:  help info now internal to TBag32 (avoids missing TBA' +
  922.         'GHELP.RTF msg) .'
  923.       '\par '
  924.       
  925.         '\par HELP:  additional blank lines inserted in order to keep mai' +
  926.         'n sections separated.'
  927.       '\par '
  928.       '\par \plain\f4\fs20 '
  929.       '\par \plain\f3\fs24\cf2\b ---BUILD HISTORY:  001  04-Mar-97'
  930.       '\par '
  931.       
  932.         '\par \plain\f2\fs20\cf0 Initial release issued to a few friends ' +
  933.         'only for them to tear it to pieces and ask for all sorts of wond' +
  934.         'erful new features!\plain\f4\fs20 '
  935.       '\par '
  936.       '\par '
  937.       '\par '
  938.       '\par '
  939.       '\par '
  940.       '\par '
  941.       '\par '
  942.       '\par '
  943.       '\par '
  944.       '\par '
  945.       '\par '
  946.       '\par '
  947.       '\par '
  948.       '\par '
  949.       '\par '
  950.       '\par '
  951.       '\par '
  952.       '\par '
  953.       '\par '
  954.       '\par '
  955.       '\par '
  956.       '\par '
  957.       '\par '
  958.       '\par \plain\f3\fs20 '
  959.       '\par }')
  960.     TabOrder = 2
  961.     Visible = False
  962.   end
  963. end
  964.